import tkinter
import threading
import datetime
import time
app=tkinter.Tk()
#不显示标题框
app.overrideredirect(True)
#半透明框体
app.attributes('-alpha',0.9)
#窗口总是显示在顶端
app.attributes('-topmost',1)
#设置初始位置和大小
app.geometry('110x25+100+100')
labelDateTime=tkinter.Label(app)
labelDateTime.pack(fill=tkinter.BOTH,expand=tkinter.YES)
labelDateTime.configure(bg='gray')
#变量X和Y用来记录鼠标左键按下的位置
X=tkinter.IntVar(value=0)
Y=tkinter.IntVar(value=0)
#表示窗口是否可拖动变量
canMove=tkinter.IntVar(value=0)
#表示是否仍然运行的变量
still=tkinter.IntVar(value=1)
def onLeftButtonDown(event):
    #开始拖动时增加透明度
    app.attributes('-alpha',0.4)
    #鼠标左键按下，记录当前位置
    X.set(event.x)
    Y.set(event.y)
    #标记窗口可拖动
    canMove.set(1)
#绑定鼠标单击事件处理函数
labelDateTime.bind('<Button-1>',onLeftButtonDown)
def onLeftButtonUp(event):
    #停止拖动恢复透明度
    app.attributes('alpha',0.9)
    #鼠标左键抬起，标记窗口不可动
    canMove.set(0)
#绑定鼠标抬起事件处理函数
labelDateTime.bind('<ButtonRelease-1>',onLeftButtonUp)
def onLeftButtonMove(event):
    if canMove.get()==0:
        return
    #重新计算并修改窗口新位置
    newX=app.winfo_x()+(event.x-X.get())
    newY=app.winfo_y()+(event.y-Y.get())
    g='110x25+'+str(newX)+'+'+str(newY)
    app.geometry(g)
#绑定鼠标左键移动处理函数
labelDateTime.bind('<B1-Motion>',onLeftButtonMove)
def onRightButtonDown(event):
    still.set(0)
    t.join(0.2)
    #关闭窗口
    app.destroy()
#绑定鼠标右键单击事件处理函数
labelDateTime.bind('<Button-3>',onRightButtonDown)
#显示时间线程函数
def nowDateTime():
    while still.get()==1:
        #获取当前时间日期
        now=datetime.datetime.now()
        s=str(now.year)+'-'+str(now.month)+\
            '-'+str(now.day)+''
        s=s+str(now.hour)+':'+str(now.minute)+\
            ':'+str(now.second)
        #显示当前时间
        labelDateTime['text']=s
        #0.5秒刷新一次时间日期
        time.sleep(0.5)
#创建并启动线程
t=threading.Thread(target=nowDateTime)
t.daemon=True
t.start()
app.mainloop()
